package com.link510.aitools.framework.coder;

import com.link510.aitools.core.helper.ByteHelper;
import com.orhanobut.logger.Logger;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
import io.netty.util.CharsetUtil;

import java.nio.charset.Charset;
import java.util.List;

@ChannelHandler.Sharable
public class MessageEncoder extends MessageToMessageEncoder<String> {

    private Charset charset = CharsetUtil.ISO_8859_1;

    /*private Charset charset = CharsetUtil.UTF_8;
     */

    @Override
    protected void encode(ChannelHandlerContext ctx, String msg, List<Object> out) throws Exception {

        if (msg.length() == 0) {
            return;
        }

        try {

            msg = "23402340" + msg + "2424";

            byte[] bytes = ByteHelper.hexStringToByte(msg);

            if (bytes == null || bytes.length <= 0) {
                return;
            }

            Logger.i("=====================================================命令组装成功=====================================================");
            Logger.i("====================================================msg:" + msg + "====================================================");

            for (int i = 0; i < bytes.length; i++) {
                System.out.println("bytes[" + i + "]:" + bytes[i]);
            }

            ByteBuf byteBuf = ctx.alloc().buffer(Integer.BYTES);
            byteBuf.writeBytes(bytes);
            out.add(byteBuf);
            Logger.i("=====================================================命令下发成功:" + msg + "=====================================================");


        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }


}
